package com.shujia.scala

object Demo17Implicit {
  def main(args: Array[String]): Unit = {

    /**
      * 隐式转换
      *
      * 1、隐式转换方法
      * 2、隐式转换变量
      *
      */

    def print(str: String): Unit = {
      println(str)
    }

    print("数加")

    //显示转换
    print(12.toString)

    print(12)

    /**
      * 隐式转换方法   隐式转换只在当前作用域起作用
      * 和方法名无关   和参数类型返回值类型有关
      *
      * 同一个作用域 只能有一个参数类型和返回值类型一样的隐式转换方法
      */

    //将int类型转换成String类型
    implicit def intToString(i: Int): String = i + "|"


    //导入外部隐式转换
    import Im._

    print(3.14)
  }


}

object Im {
  implicit def doubleToString(d: Double): String = {
    d + "d"
  }
}
